﻿using System;
using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace 坦克大战正式
{
    //可移动的
    enum Direction
    {
        Up=0,
        Down=1,
        Left=2,
        Right= 3
    }
    class Movething : GameObject
    {
        public Bitmap BitmapUp { get; set; }
        public Bitmap BitmapDown { get; set; }
        public Bitmap BitmapRight { get; set; }
        public Bitmap BitmapLeft { get; set; }
        //public bool IsMoving { get; set; }
        public int Speed { get; set; }
        public Direction dir;
        public Direction Dir
        {
            get
            {
                return dir;
            }
            set
            {
                dir = value;
                //siki讲的，应该有错，修改方式在GetImage()

                //Bitmap bmp = null; 
                //switch(dir)
                //{
                //    case Direction.Up:
                //        bmp = BitmapUp;
                //        break;
                //    case Direction.Down:
                //        bmp = BitmapDown;
                //        break;
                //    case Direction.Left:
                //        bmp = BitmapLeft;
                //        break;
                //    case Direction.Right:
                //        bmp = BitmapRight;
                //        break;
                //}
                ////Width = bmp.Width;
                ////Height = bmp.Height;
            }
        }

        protected override Image GetImage()
        {
            Bitmap bitmap = null;
            switch(Dir)
            {
                case Direction.Up:
                    bitmap = BitmapUp;
                    break;
                case Direction.Down:
                    bitmap = BitmapDown;
                    break;
                case Direction.Left:
                    bitmap = BitmapLeft;
                    break;
                case Direction.Right:
                    bitmap = BitmapRight;
                    break;
            }
            Width = bitmap.Width;//siki讲的是注释的那两行
            Height = bitmap.Height;
            bitmap.MakeTransparent(Color.Black);
            return bitmap;
        }
        //public override void Update()
        //{
        //    MoveCheck();//移动检查
        //    Move();

        //    base.Update();
        //}
        //private void MoveCheck()
        //{
        //    #region 检查有没有超出窗体边界
        //    if (Dir == Direction.Up)
        //    {
        //        if (Y - Speed < 0)
        //        {
        //            IsMoving = false; return;
        //        }
        //    }
        //    else if (Dir == Direction.Down)
        //    {
        //        if (Y + Speed > 450 - Height)
        //        {
        //            IsMoving = false; return;
        //        }
        //    }
        //    else if (Dir == Direction.Left)
        //    {
        //        if (X - Speed < 0)
        //        {
        //            IsMoving = false; return;
        //        }
        //    }
        //    else if (Dir == Direction.Right)
        //    {
        //        if (X + Speed > 450 - Width)
        //        {
        //            IsMoving = false; return;
        //        }
        //    }
        //    #endregion

        //    //检查有没有和其它元素发生碰撞
        //    Rectangle rect = GetRectangle();
        //    switch (Dir)
        //    {
        //        case Direction.Up:
        //            rect.Y -= Speed;
        //            break;
        //        case Direction.Down:
        //            rect.Y += Speed;
        //            break;
        //        case Direction.Right:
        //            rect.X += Speed;
        //            break;
        //        case Direction.Left:
        //            rect.X -= Speed;
        //            break;
        //    }
        //    if (GameObjectManager.IsCollideWall(rect) != null)
        //    {
        //        IsMoving = false; return;
        //    }
        //    if (GameObjectManager.IsCollideSteel(rect) != null)
        //    {
        //        IsMoving = false; return;
        //    }
        //    if (GameObjectManager.IsCollideBoss(rect))
        //    {
        //        IsMoving = false; return;
        //    }
        //}
        //public void Move()
        //{
        //    if (IsMoving == false) return;
        //    switch (Dir)
        //    {
        //        case Direction.Up:
        //            Y -= Speed;
        //            break;
        //        case Direction.Down:
        //            Y += Speed;
        //            break;
        //        case Direction.Left:
        //            X -= Speed;
        //            break;
        //        case Direction.Right:
        //            X += Speed;
        //            break;
        //    }
        //}
    }
}
